package reporte;

import java.awt.*;
import java.sql.*;

import conexion.*;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTabbedPane;
import javax.swing.JTable;
import javax.swing.LayoutStyle.ComponentPlacement;
import javax.swing.WindowConstants;

import java.awt.BorderLayout;

import javax.swing.JPanel;
import javax.swing.ImageIcon;
import javax.swing.table.DefaultTableModel;

import com.toedter.calendar.JCalendar;

import conexion.EstablecerConexion;

import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.border.TitledBorder;
import javax.swing.JComboBox;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JSeparator;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Calendar;

import com.toedter.calendar.JMonthChooser;
import com.toedter.components.JLocaleChooser;
import com.toedter.calendar.JDateChooser;
import com.toedter.components.JSpinField;
import com.toedter.calendar.JYearChooser;
import com.toedter.calendar.JDayChooser;

import javax.swing.Box;
import javax.swing.JSeparator;
import javax.swing.SwingConstants;
import javax.swing.border.BevelBorder;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;

import java.awt.event.ItemListener;
import java.awt.event.ItemEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JDesktopPane;
import javax.swing.ScrollPaneConstants;
import javax.swing.JInternalFrame;
import javax.swing.JLayeredPane;


public class Principal {

	private JFrame frmGestion;
	private JCalendar calendario1;
	private JCalendar calendario2;
	private JButton Ver = new JButton("Ver detalles");
	private JTextField txtFolioCamion;
	private JTextField txfPatenteMaquina;
	private JTextField txfPatenteCamion;
	private JTextField txfUbicacionCamion;
	private JTextField txfOperadorCamion;
	private JTextField txfClienteCamion;
	private JTextField txfCubicosCamion;
	private JTextField txfVueltaCamion;
	private JTextField txfPetroleoCamion;
	private JTextField txfFolio;
	private JTextField txfPatente;
	private JTextField txfRutOperador;
	private JTextField txfRutCliente;
	private JTextField txfUbicacion;
	private JTextField txfPetroleoCargado;
	private JTextField txfHorasDias;
	private JTable tableOperador;


	private Connection conexion;
	private ResultSet resultados;
	private Statement sentencia;
	private DefaultTableModel dtm;
	private JTable table;
	
	public int OpcionConsulta = 0;
	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					Principal window = new Principal();
					window.frmGestion.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the application.
	 */
	public Principal() {
		initialize();
	}

	/**
	 * Initialize the contents of the frame.
	 */
	
	
	private void initialize() {
		frmGestion = new JFrame();
		frmGestion.setTitle("Gestion");
		frmGestion.setBounds(100, 100, 900, 600);
		frmGestion.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frmGestion.getContentPane().setLayout(new BorderLayout(0, 0));
		
		JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP);
		frmGestion.getContentPane().add(tabbedPane, BorderLayout.CENTER);
		
		JPanel pnlReportes = new JPanel();
		tabbedPane.addTab("Reportes", new ImageIcon(Principal.class.getResource("/iconos/reportes.png")), pnlReportes, null);
		pnlReportes.setLayout(new BorderLayout(0, 0));
		
		JPanel pnlMaquinas = ModuloMaquinarias();
		tabbedPane.addTab("Maquinarias", new ImageIcon(Principal.class.getResource("/iconos/maquinaria.png")), pnlMaquinas, null);
		
		//Panel Operador.
		JPanel pnlOperador = Paneles.pnlOperador.ModuloReportes();
		tabbedPane.addTab("Operador", new ImageIcon(Principal.class.getResource("/iconos/operador.png")), pnlOperador, null);
		
		JPanel pnlClientes = new JPanel();
		tabbedPane.addTab("Clientes", new ImageIcon(Principal.class.getResource("/iconos/clientes.png")), pnlClientes, null);
		
		JPanel pnlFacturacion = Factura();
		tabbedPane.addTab("Facturacion", new ImageIcon(Principal.class.getResource("/iconos/factura.png")), pnlFacturacion, null);
		
		JTabbedPane ptnIngresoDatos = new JTabbedPane(JTabbedPane.LEFT);
		tabbedPane.addTab("Ingreso Datos", new ImageIcon(Principal.class.getResource("/iconos/ingreso_datos.png")), ptnIngresoDatos, null);
		
		JPanel pnlInTrabajador = new JPanel();
		ptnIngresoDatos.addTab("Trabajador", new ImageIcon(Principal.class.getResource("/iconos/operador.png")), pnlInTrabajador, null);
		
		//panel interno, ingreso Datos Reportes Maquinaria.
		JPanel pnlInReportesMaquinas = Paneles.pnlInternoIngresoMaquinas.IngresoReporteMaquinaria();
		ptnIngresoDatos.addTab("Reportes \r\nMaquinaria", new ImageIcon(Principal.class.getResource("/iconos/reporte2.png")), pnlInReportesMaquinas, null);
		pnlInReportesMaquinas.setLayout(null);
		
		//panel interno, ingreso Datos Reportes Camiones
		JPanel pnlInReportesCamion = Paneles.pnlInternoIngresoCamiones.IngresoReporteCamiones();
		ptnIngresoDatos.addTab("Reportes Camiones", new ImageIcon(Principal.class.getResource("/iconos/reporte2.png")), pnlInReportesCamion, null);
		pnlInReportesCamion.setLayout(null);
		
		
		JPanel pnlInEmpresa = new JPanel();
		ptnIngresoDatos.addTab("Empresa", new ImageIcon(Principal.class.getResource("/iconos/empresa.png")), pnlInEmpresa, null);
		
		JPanel pnlInMaquinarias = new JPanel();
		ptnIngresoDatos.addTab("Maquinarias", new ImageIcon(Principal.class.getResource("/iconos/maquinaria.png")), pnlInMaquinarias, null);
	}
	
	public JPanel ModuloMaquinarias(){
		JPanel Modulo1 = new JPanel();
		
		JLabel lblFechaIn = new JLabel("Ingrese Fecha Inicio");
		lblFechaIn.setFont(new Font("Tahoma", Font.BOLD, 13));
		
		final JDateChooser dateInt = new JDateChooser();
		dateInt.setEnabled(false);
		
		JLabel lblFechaFin = new JLabel("Ingrese Fecha Final");
		lblFechaFin.setFont(new Font("Tahoma", Font.BOLD, 13));
		
		final JDateChooser dateFin = new JDateChooser();
		dateFin.setEnabled(false);
		
		JLabel lblPatenteMaquinaria = new JLabel("Patente Maquinaria");
		lblPatenteMaquinaria.setFont(new Font("Tahoma", Font.BOLD, 13));
		
		JLabel lblPatenteCamion = new JLabel("Patente Camion");
		lblPatenteCamion.setFont(new Font("Tahoma", Font.BOLD, 13));
		
		final JComboBox comboBoxTipoMaq = new JComboBox();
		comboBoxTipoMaq.setModel(new DefaultComboBoxModel(new String[] {"Seleccione el Tipo","RETROEXCAVADORA", "MOTONIVELADORA", "EXCAVADORA", "MINI CARGADOR", "RODILLO", "CARGADOR"}));
		JLabel labelMaq = new JLabel("Maquinaria");
		labelMaq.setFont(new Font("Tahoma", Font.BOLD, 13));
		comboBoxTipoMaq.setEnabled(false);
		
		final JComboBox comboBoxCamion = new JComboBox();
		comboBoxCamion.setModel(new DefaultComboBoxModel(new String[] {"Seleccione el Tipo","CAMION 8 TONELADAS", "CAMION 16 TONELADAS"}));
		JLabel labelCamion = new JLabel("Camiones");
		labelCamion.setFont(new Font("Tahoma", Font.BOLD, 13));
		comboBoxCamion.setEnabled(false);
		
		txfPatenteMaquina = new JTextField();
		txfPatenteMaquina.setColumns(10);
		txfPatenteMaquina.setEnabled(false);
		
		txfPatenteCamion = new JTextField();
		txfPatenteCamion.setColumns(10);
		txfPatenteCamion.setEnabled(false);
		
		JScrollPane scrollPane = new JScrollPane();
		
		table = new JTable();
		scrollPane.setViewportView(table);
		
	final JButton btnConsultar2 = new JButton("Consultar");
	btnConsultar2.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent arg0) {
			
			DefaultTableModel modelo = new DefaultTableModel();
			
			try {
		    	Connection conn = null;
				ResultSet resultSet = null;
				
				String stmConsulta = "";
				PreparedStatement cargar = null;
				
				java.sql.Date dateInicioSQL = null;
				java.sql.Date dateFinalSQL = null;
				String PatenteMaq = "";
				String PatenteCamion = "";
				
				conexion.EstablecerConexion conectar = new conexion.EstablecerConexion();
				conn = conectar.iniciar();
		        Statement statement = conn.createStatement();
		        
		        //Aca vemos cual consulta realizar.
		        switch (OpcionConsulta)
				{
				    case 1: //Consumo combustible por tipo maquina mensual
				    	
				    	PatenteMaq = txfPatenteMaquina.getText();
				    	PatenteCamion = txfPatenteCamion.getText();
						//fecha inicial
						dateInicioSQL = new java.sql.Date(dateInt.getDate().getTime());
						//fecha final
						dateFinalSQL = new java.sql.Date(dateFin.getDate().getTime());
						
						stmConsulta = ("SELECT patente, tipo_maquina, sum (petroleo_cargado) as combustible_total"
                             + "FROM reporte_diario "
                             + "WHERE fecha BETWEEN ?  AND ?"
                             + "GROUP BY tipo_maquina,patente"
							 + "UNION (SELECT patente, tipo_maquina, sum (petroleo_cargado)  as combustible_total"
							 + "FROM control_diario"
							 + "WHERE fecha BETWEEN ?  AND ?"
							 + "GROUP BY tipo_maquina,patente"
							 + "ORDER BY tipo_maquina DESC");
					cargar = conn.prepareStatement(stmConsulta);

					cargar.setString(1, PatenteMaq);
					cargar.setString(3, PatenteCamion);
					
					cargar.setDate(4, dateInicioSQL);
					cargar.setDate(5, dateFinalSQL);
			
					resultSet = cargar.executeQuery();
					
                    break;
				case 2: //Consumo combustible por maquina especifica mensual
					
//							SELECT patente, tipo_maquina, sum (petroleo_cargado) as combustible_mensual
//							FROM reporte_diario
//							WHERE fecha BETWEEN '2014-05-01'  AND '2014-06-30'and patente = 'CKWR40-9'
//							GROUP BY patente,tipo_maquina
//							UNION(SELECT patente, tipo_maquina, sum (petroleo_cargado) as combustible_mensual
//							FROM control_diario
//							WHERE fecha BETWEEN '2014-05-01'  AND '2014-06-30'and patente = 'VB-7205'
//							GROUP BY patente,tipo_maquina)
										
					break;
				case 3: //Listar patentes maquinas con revision tecnica al dia.
			
					//fecha inicial
					dateInicioSQL = new java.sql.Date(dateInt.getDate().getTime());;
					
					stmConsulta =  ("SELECT patente, tipo_maquina, revision_tecnica"
							 + "FROM maquinaria"
							 + "WHERE revision_tecnica > fecha = ? " 
							 + "GROUP BY tipo_maquina,patente"
							 + "ORDER BY tipo_maquina DESC");
					cargar = conn.prepareStatement(stmConsulta);
					cargar.setDate(1, dateInicioSQL);
					resultSet = cargar.executeQuery();


					break;
					
				case 4://Listar patentes maquinas con revision tecnica vencida.

//							SELECT patente, tipo_maquina, revision_tecnica
//							FROM maquinaria
//							WHERE revision_tecnica < '2013-09-30' 
//							GROUP BY tipo_maquina,patente
//							ORDER BY tipo_maquina DESC
					
					break;
					
				case 5://Listar permiso de circulacion maquinas pagados .

//							SELECT patente, tipo_maquina, permiso_circulacion
//							FROM maquinaria
//							WHERE permiso_circulacion > '2013-09-30'
//							GROUP BY tipo_maquina,patente
//							ORDER BY tipo_maquina DESC
									
					break;
					
				case 6://Listar permiso de circulacion maquinas vencidos

//							SELECT patente, tipo_maquina, permiso_circulacion
//							FROM maquinaria
//							WHERE permiso_circulacion < '2013-09-30'
//							GROUP BY tipo_maquina,patente
//							ORDER BY tipo_maquina DESC
					
					break;
					
				}
		        
		        //Obtenemos informacion del resultado de la consulta.
		        ResultSetMetaData metaDatosRs = resultSet.getMetaData();
		        
		        //cantidad columnas
		        int cantidadColumnas = metaDatosRs.getColumnCount();
		    	
		        //nombres columnas
		    	for (int i = 1; i >= cantidadColumnas; i++) {
		    		modelo.addColumn(metaDatosRs.getColumnLabel(i));
		    	}
		    	
		    	//Establecer como cabezeras el nombre de las colimnas
		    	for (int i = 1; i <= cantidadColumnas; i++) {
		    		modelo.addColumn(metaDatosRs.getColumnLabel(i));
		    	}
		    	
		    	//Creando las filas para el JTable
		    	 while (resultSet.next()) {
		    	  Object[] fila = new Object[cantidadColumnas];
		    	  for (int i = 0; i < cantidadColumnas; i++) {
		    	    fila[i]=resultSet.getObject(i+1);
		    	  }
		    	  modelo.addRow(fila);
		    	 }
		    	 
		    	 tableOperador.setModel(modelo);
		    	 resultSet.close();
		    	 conn.close();
		     }
		   catch (SQLException ex) {
		        System.err.println( ex.getMessage() );
		   }
			
		}
	});
		
		
		System.out.println();
		final JComboBox comboBoxMaq = new JComboBox();
		comboBoxMaq.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				switch (comboBoxMaq.getSelectedIndex()){
				case 1:
					txfPatenteMaquina.setEnabled(true);
					txfPatenteCamion.setEnabled(true);
					dateInt.setEnabled(true);
					dateFin.setEnabled(true);
					comboBoxTipoMaq.setEnabled(false);
					comboBoxCamion.setEnabled(false);
					OpcionConsulta = comboBoxMaq.getSelectedIndex();
					break;
					
				case 2:
					txfPatenteMaquina.setEnabled(false);
					txfPatenteCamion.setEnabled(false);
					dateInt.setEnabled(true);
					dateFin.setEnabled(true);
					comboBoxTipoMaq.setEnabled(true);
					comboBoxCamion.setEnabled(true);
					OpcionConsulta = comboBoxMaq.getSelectedIndex();
					break;
					
				case 3:
					txfPatenteMaquina.setEnabled(true);
					txfPatenteCamion.setEnabled(true);
					dateInt.setEnabled(true);
					dateFin.setEnabled(false);
					comboBoxTipoMaq.setEnabled(false);
					comboBoxCamion.setEnabled(false);
					OpcionConsulta = comboBoxMaq.getSelectedIndex();
					break;
					
				case 4:
					txfPatenteMaquina.setEnabled(true);
					txfPatenteCamion.setEnabled(true);
					dateInt.setEnabled(true);
					dateFin.setEnabled(false);
					comboBoxTipoMaq.setEnabled(false);
					comboBoxCamion.setEnabled(false);
					OpcionConsulta = comboBoxMaq.getSelectedIndex();
					break;
					
				case 5:
					txfPatenteMaquina.setEnabled(true);
					txfPatenteCamion.setEnabled(true);
					dateInt.setEnabled(true);
					dateFin.setEnabled(false);
					comboBoxTipoMaq.setEnabled(false);
					comboBoxCamion.setEnabled(false);
					OpcionConsulta = comboBoxMaq.getSelectedIndex();
					break;
					
				case 6:
					txfPatenteMaquina.setEnabled(true);
					txfPatenteCamion.setEnabled(true);
					dateInt.setEnabled(true);
					dateFin.setEnabled(false);
					comboBoxTipoMaq.setEnabled(false);
					comboBoxCamion.setEnabled(false);
					OpcionConsulta = comboBoxMaq.getSelectedIndex();
					break;
								
				}
				System.out.println();
				
			} 	
		});
		
		comboBoxMaq.setModel(new DefaultComboBoxModel(new String[] {"Seleccione una opcion.", 
				"Consumo combustible por tipo maquina mensual .", 
				"Consumo combustible por maquina especifica mensual.", 
				"Listar patentes maquinas con revision tecnica al dia.", 
				"Listar patentes maquinas con revision tecnica vencida. ", 
				"Listar permiso de circulacion maquinas pagados . ", 
				"Listar permiso de circulacion maquinas vencidos ."}));

		GroupLayout gl_pnlMaquinaria = new GroupLayout(Modulo1);
		gl_pnlMaquinaria.setHorizontalGroup(
			gl_pnlMaquinaria.createParallelGroup(Alignment.LEADING)
				.addGroup(gl_pnlMaquinaria.createSequentialGroup()
					.addGap(10)
					.addGroup(gl_pnlMaquinaria.createParallelGroup(Alignment.LEADING)
						.addComponent(comboBoxMaq, GroupLayout.PREFERRED_SIZE, 299, GroupLayout.PREFERRED_SIZE)
						.addGroup(gl_pnlMaquinaria.createSequentialGroup()
							.addComponent(lblFechaIn)
							.addGap(23)
							.addComponent(dateInt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
						.addGroup(gl_pnlMaquinaria.createSequentialGroup()
							.addGap(6)
							.addComponent(lblFechaFin)
							.addGap(23)
							.addComponent(dateFin, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
						.addGroup(gl_pnlMaquinaria.createSequentialGroup()
							.addGap(41)
							.addGroup(gl_pnlMaquinaria.createParallelGroup(Alignment.LEADING)
								.addGroup(gl_pnlMaquinaria.createSequentialGroup()
									.addGroup(gl_pnlMaquinaria.createParallelGroup(Alignment.TRAILING)
										.addGroup(gl_pnlMaquinaria.createSequentialGroup()
											.addComponent(labelMaq, GroupLayout.PREFERRED_SIZE, 71, GroupLayout.PREFERRED_SIZE)
											.addGap(46))
										.addGroup(gl_pnlMaquinaria.createSequentialGroup()
											.addComponent(labelCamion, GroupLayout.PREFERRED_SIZE, 107, GroupLayout.PREFERRED_SIZE)
											.addPreferredGap(ComponentPlacement.UNRELATED)))
									.addGroup(gl_pnlMaquinaria.createParallelGroup(Alignment.LEADING)
										.addComponent(comboBoxTipoMaq, GroupLayout.PREFERRED_SIZE, 127, GroupLayout.PREFERRED_SIZE)
										.addComponent(btnConsultar2, GroupLayout.PREFERRED_SIZE, 89, GroupLayout.PREFERRED_SIZE)
										.addComponent(comboBoxCamion, GroupLayout.PREFERRED_SIZE, 127, GroupLayout.PREFERRED_SIZE)))
								.addGroup(gl_pnlMaquinaria.createSequentialGroup()
									.addGroup(gl_pnlMaquinaria.createParallelGroup(Alignment.LEADING)
										.addComponent(lblPatenteCamion)
										.addComponent(lblPatenteMaquinaria))
									.addPreferredGap(ComponentPlacement.RELATED)
									.addGroup(gl_pnlMaquinaria.createParallelGroup(Alignment.LEADING)
										.addComponent(txfPatenteCamion, GroupLayout.PREFERRED_SIZE, 95, GroupLayout.PREFERRED_SIZE)
										.addComponent(txfPatenteMaquina, GroupLayout.PREFERRED_SIZE, 95, GroupLayout.PREFERRED_SIZE))))))
					.addGap(10)
					.addComponent(scrollPane, GroupLayout.PREFERRED_SIZE, 793, GroupLayout.PREFERRED_SIZE)
					.addContainerGap(67, Short.MAX_VALUE))
		);
		gl_pnlMaquinaria.setVerticalGroup(
			gl_pnlMaquinaria.createParallelGroup(Alignment.LEADING)
				.addGroup(gl_pnlMaquinaria.createSequentialGroup()
					.addGap(11)
					.addGroup(gl_pnlMaquinaria.createParallelGroup(Alignment.LEADING)
						.addComponent(scrollPane, GroupLayout.PREFERRED_SIZE, 578, GroupLayout.PREFERRED_SIZE)
						.addGroup(gl_pnlMaquinaria.createSequentialGroup()
							.addComponent(comboBoxMaq, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
							.addGap(28)
							.addGroup(gl_pnlMaquinaria.createParallelGroup(Alignment.LEADING)
								.addGroup(gl_pnlMaquinaria.createSequentialGroup()
									.addGap(6)
									.addComponent(lblFechaIn, GroupLayout.PREFERRED_SIZE, 14, GroupLayout.PREFERRED_SIZE))
								.addComponent(dateInt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
							.addGap(22)
							.addGroup(gl_pnlMaquinaria.createParallelGroup(Alignment.LEADING)
								.addGroup(gl_pnlMaquinaria.createSequentialGroup()
									.addGap(6)
									.addComponent(lblFechaFin, GroupLayout.PREFERRED_SIZE, 14, GroupLayout.PREFERRED_SIZE))
								.addComponent(dateFin, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
							.addGap(40)
							.addGroup(gl_pnlMaquinaria.createParallelGroup(Alignment.LEADING)
								.addComponent(lblPatenteMaquinaria, GroupLayout.PREFERRED_SIZE, 14, GroupLayout.PREFERRED_SIZE)
								.addComponent(txfPatenteMaquina, GroupLayout.PREFERRED_SIZE, 18, GroupLayout.PREFERRED_SIZE))
							.addGroup(gl_pnlMaquinaria.createParallelGroup(Alignment.LEADING)
								.addGroup(gl_pnlMaquinaria.createSequentialGroup()
									.addGap(6)
									.addComponent(txfPatenteCamion, GroupLayout.PREFERRED_SIZE, 18, GroupLayout.PREFERRED_SIZE)
									.addGap(44)
									.addComponent(btnConsultar2))
								.addGroup(gl_pnlMaquinaria.createSequentialGroup()
									.addPreferredGap(ComponentPlacement.UNRELATED)
									.addComponent(lblPatenteCamion, GroupLayout.PREFERRED_SIZE, 14, GroupLayout.PREFERRED_SIZE)))
							.addGap(92)
							.addGroup(gl_pnlMaquinaria.createParallelGroup(Alignment.LEADING)
								.addComponent(labelMaq, GroupLayout.PREFERRED_SIZE, 16, GroupLayout.PREFERRED_SIZE)
								.addComponent(comboBoxTipoMaq, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
							.addGap(30)
							.addGroup(gl_pnlMaquinaria.createParallelGroup(Alignment.BASELINE)
								.addComponent(comboBoxCamion, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
								.addComponent(labelCamion))))
					.addGap(27))
		);
		Modulo1.setLayout(gl_pnlMaquinaria);	
		
		return Modulo1;
	}
	
	public JPanel Factura(){
		
		JPanel PanelFactura = new JPanel(new BorderLayout());
		JPanel PanelBotonVer = new JPanel(new FlowLayout());
		JPanel PanelBotonFacturar = new JPanel(new FlowLayout());
		JSplitPane split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
		JPanel PanelCalendario1 = new JPanel(new FlowLayout());
		JPanel PanelCalendario2 = new JPanel(new FlowLayout());
		JPanel PanelDerecho = new JPanel(new GridLayout(0,1));
		JPanel PanelIzquierdo = new JPanel(new FlowLayout());
		JButton Facturar = new JButton("Facturar");
		JComboBox listaClientes = null;
		
		String[] columnNames = {"Detalle",
				"Cantidad",
				"Total"};
		
        TitledBorder fechaInicio = BorderFactory.createTitledBorder(
				  BorderFactory.createLineBorder(Color.GRAY),"FECHA INICIAL");
        fechaInicio.setTitleJustification(TitledBorder.CENTER);
        
        TitledBorder fechaFinal = BorderFactory.createTitledBorder(
				  BorderFactory.createLineBorder(Color.GRAY),"FECHA FINAL");
        fechaFinal.setTitleJustification(TitledBorder.CENTER);
        
        TitledBorder tituloFactura = BorderFactory.createTitledBorder(
				  BorderFactory.createLineBorder(Color.GRAY),"FACTURA");
        tituloFactura.setTitleJustification(TitledBorder.CENTER);
		
		//creamos el Modelo de la tabla con los datos anteriores
	     dtm= new DefaultTableModel(columnNames,0);
		//se crea la Tabla con el modelo DefaultTableModel
		 table = new JTable(dtm);

		//Creamos un JscrollPane y le agregamos la JTable
		JScrollPane scrollPane = new JScrollPane(table,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
				JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
		
		scrollPane.setBorder(tituloFactura);
		
		//Se crean los calendarios
		calendario1 = new JCalendar();
		calendario2 = new JCalendar();
	
		
        calendario1.setBorder(fechaInicio);
        calendario2.setBorder(fechaFinal);
        
		PanelCalendario1.add(calendario1);
		PanelCalendario2.add(calendario2);
		
		Ver.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				try {
					mostrar();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
		});
		
		try {
			listaClientes = ListarClientes();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		PanelBotonVer.add(listaClientes);
		PanelBotonVer.add(Ver);
		PanelBotonFacturar.add(Facturar);

		PanelDerecho.add(PanelCalendario1);
		PanelDerecho.add(PanelCalendario2);
		PanelDerecho.add(PanelBotonVer);
		
		PanelIzquierdo.add(scrollPane);
		PanelIzquierdo.add(PanelBotonFacturar);
		
		split.add(PanelIzquierdo,JSplitPane.LEFT);
		split.add(PanelDerecho,JSplitPane.RIGHT);
		split.setDividerLocation(700);
		
		PanelFactura.add(split,"Center");
		
		return PanelFactura;
		
	}
	
	public JComboBox<String> ListarClientes() throws SQLException{
		
		JComboBox<String> aux = new JComboBox<String>();
		String nombreCliente;
		
		aux.addItem("");
		
		EstablecerConexion nuevaConexion = new EstablecerConexion();
		
		try {
			conexion = nuevaConexion.iniciar();
		} catch (SQLException e) {
			System.out.println("No se pudo establecer la conexion ... ");
			e.printStackTrace();
		}
		
		if(conexion != null){
			System.out.println("Se ha establecido la conexion ... ");
			sentencia = conexion.createStatement();
			resultados = sentencia.executeQuery("SELECT nombre FROM cliente");
			
			while(resultados.next()){
				nombreCliente = resultados.getString("nombre");
				aux.addItem(nombreCliente);
			}
			
		}
		
		return aux;
	}
	
	public void siguiente() throws SQLException{
		
		String maquina = resultados.getString("tipo_maquina");
		float total = resultados.getFloat("total");
		String CU = resultados.getString("tipo_arriendo");
		
		Math.round(total);
		String totalString = (""+total);
		
		String[] modelo = {maquina,totalString,CU};
		dtm.addRow(modelo);
	}
	
	public void mostrar() throws SQLException{
		
		EstablecerConexion nuevaConexion = new EstablecerConexion();
		
		try {
			conexion = nuevaConexion.iniciar();
		} catch (SQLException e) {
			System.out.println("No se pudo establecer la conexion ... ");
			e.printStackTrace();
		}
		
		if(conexion != null){
			System.out.println("Se ha establecido la conexion ... ");
			sentencia = conexion.createStatement();
			resultados = sentencia.executeQuery("SELECT tipo_maquina, SUM("+"\"horas_dias\""+") as total, tipo_arriendo"
					+ " FROM reporte_diario"
					+ " WHERE rutcliente = "+"\'"+"76.004.090-8"+"\'"
					+ " GROUP BY tipo_maquina, tipo_arriendo"
					+ " UNION"
					+ " SELECT tipo_maquina, SUM("+"\"dias-vueltas\""+") as total, tipo_arriendo"
					+ " FROM control_diario"
					+ " WHERE rutcliente = "+"\'"+"76.004.090-8"+"\'"
					+ " GROUP BY tipo_maquina, tipo_arriendo");
			
			while(resultados.next())
			siguiente();
		}
		
	}
}
